/*
 *    This file is part of SSHTunneler.
 *
 *    Copyright 2009 Jean-Sebastien Gelinas <calestar@gmail.com>
 *
 *    SSHTunneler is free software: you can redistribute it and/or modify
 *    it under the terms of the GNU General Public License as published by
 *    the Free Software Foundation, either version 3 of the License, or
 *    (at your option) any later version.
 *
 *    SSHTunneler is distributed in the hope that it will be useful,
 *    but WITHOUT ANY WARRANTY; without even the implied warranty of
 *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *    GNU General Public License for more details.
 *
 *    You should have received a copy of the GNU General Public License
 *    along with SSHTunneler.  If not, see <http://www.gnu.org/licenses/>.
 *
 */
package sshtunneler.library;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

import javax.swing.filechooser.FileFilter;

public class ExtensionFilter extends FileFilter {

	protected List<String> accepted_extensions = new ArrayList<String>();
	protected String description;

	public ExtensionFilter(String description) {
		this.description = description;
	}

	public void add_accepted_extension(String extension) {
		this.accepted_extensions.add(extension);
	}

	@Override
	public boolean accept(File f) {
		if (f == null) {
			return false;
		}
		if (f.isDirectory()) {
			return true;
		}

		String filename = f.getName();
		int index = filename.lastIndexOf('.');
		if (index == -1) {
			return false;
		}
		String extension = filename.substring(index);
		if (this.accepted_extensions.contains(extension)) {
			return true;
		}

		return false;
	}

	@Override
	public String getDescription() {
		return this.description;
	}
}
